<?php

namespace app\common\model;

use app\lib\enum\Status;
use think\Db;
use think\Exception;

class CmsAdmin extends BaseModel
{
    //绑定角色
    public function bindRole(){
        return $this->hasOne("CmsRole","rol_id","adm_role_id");
    }

    //管理员登陆
    public function login($data){
        $result=$this->where("adm_username","=",$data['adm_username'])->find();
        if(!$result){
            return "用户名不存在";
        }
        if($result['adm_password']!=$data['adm_password']){
            return "密码错误";
        }
        if($result['adm_status']!=Status::on){
            return "账号被禁用";
        }
        //获取用户权限列表，role_list将管理员信息存入session
        $result=addRoleListInAdminInfo($result);
        session("adminInfo",$result);
        return 1;
    }

    //更新个人基本信息
    public function updateBaseInfo($data){
        $adm_id=session("adminInfo")['adm_id'];
        $data=$this->dataFilter($data);
        try{
            $result=$this->where("adm_id","=",$adm_id)->update($data);
        }catch (Exception $e){
            return "数据更新异常";
        }
        if(!$result){
            return "信息未发生变化";
        }else{
            //刷新session中的管理员信息
            refreshAdminInfoInSession();
            return 1;
        }
    }

    //修改管理员信息
    public function updateAdminInfo($data,$adm_id){
        $data=$this->dataFilter($data);
        try{
            $result=$this->where("adm_id","=",$adm_id)->update($data);
        }catch (Exception $e){
            return "信息修改失败";
        }
        if(!$result){
            return "数据未发生变化";
        }else{
            return 1;
        }
    }

    //添加管理员。需判断是否需要添加培训机构数据
    public function add($data){
        $ins_name=$data['ins_name'];
        $adm_username = input("post.adm_username");
        $result = $this->where("adm_username", "=", $adm_username)->find();
        if ($result) {
           return "该用户名已存在";
        }

        $cty_id=$data['cty_id'];
        if($ins_name==""){
            return "请填写培训机构名称";
        }
        //校验培训机构名称是否存在
        $isset=model("PyInstitution")->where("ins_name","=",$ins_name)->find();
        if($isset){
            return "该培训机构已存在";
        }


        $data=$this->dataFilter($data);
        Db::startTrans();
        try{
            //插入管理员数据
            $this->insert($data);
            $lastInsertId=$this->getLastInsID();
            //组装培训机构数据
            $insData=[
                "ins_name"=>$ins_name,
                "ins_admin_id"=>$lastInsertId,
                "ins_city_id"=>$cty_id,
                "ins_create_time"=>time()
            ];
            model("PyInstitution")->insert($insData);
        }catch (Exception $exception){
            Db::rollback();
            return "数据插入异常";
        }
        Db::commit();
        return 1;

    }

}
